#include "mprpcapplication.h"
#include <iostream>
#include <string>
#include <unistd.h>

// 初始化MprpcConfig对象
MprpcConfig MprpcApplication::m_config;

// 打印使用方法
void ShowArgsHelp()
{
    std::cout << "format: command -i <configfile>" << std::endl;
}

// 获取MprpcApplication单例模式对象
MprpcApplication& MprpcApplication::GetInstance()
{
    static MprpcApplication mprpcapp;
    return mprpcapp;
}

// 获取MprpcConfig对象
MprpcConfig& MprpcApplication::GetConfig()
{
    return m_config;
}

// 框架初始化,解析配置项文件
void MprpcApplication::Init(int argc, char **argv)
{
    if (argc < 2) {
        ShowArgsHelp();
        exit(EXIT_FAILURE);
    }
    int c = 0;
    std::string config_file;
    while ((c = getopt(argc, argv, "i:")) != -1)
    {
        switch (c)
        {
        case 'i':
            config_file = optarg;
            break;
        case '?':
            ShowArgsHelp();
            exit(EXIT_FAILURE);
        case ':':
            ShowArgsHelp();
            exit(EXIT_FAILURE);
        default:
            break;
        }
    }

    // 开始加载配置文件 rpcserverip=    rpcserverport=    zookeeperip=    zookeeperport=
    m_config.LoadConfigFile(config_file.c_str());

    // debug
    std::cout << "rpcserverip:" << m_config.Load("rpcserverip") << std::endl;
    std::cout << "rpcserverport:" << m_config.Load("rpcserverport") << std::endl;
    std::cout << "zookeeperip:" << m_config.Load("zookeeperip") << std::endl;
    std::cout << "zookeeperport:" << m_config.Load("zookeeperport") << std::endl;
}